#ifndef __SWM320_CRC_H__
#define __SWM320_CRC_H__


#define CRC32_IN32	0	//CRC32算法，输入数据32位
#define CRC32_IN16	2	//CRC32算法，输入数据16位
#define CRC32_IN8	4	//CRC32算法，输入数据 8位
#define CRC16_IN16	3	//CRC16算法，输入数据16位
#define CRC16_IN8	5	//CRC16算法，输入数据 8位


void CRC_Init(CRC_TypeDef * CRCx, uint32_t mode, uint32_t out_not, uint32_t out_rev, uint32_t ini_val);


/****************************************************************************************************************************************** 
* 函数名称:	CRC_Write()
* 功能说明:	CRC写入数据
* 输    入: uint32_t data		要写入的数据
* 输    出: 无
* 注意事项: 无
******************************************************************************************************************************************/
static __INLINE void CRC_Write(uint32_t data)
{
	CRC->DATAIN = data;
}

/****************************************************************************************************************************************** 
* 函数名称:	CRC_Result()
* 功能说明:	获取CRC计算结果
* 输    入: 无
* 输    出: uint32_t			CRC 计算结果
* 注意事项: 无
******************************************************************************************************************************************/
static __INLINE uint32_t CRC_Result(void)
{
	return CRC->RESULT;
}

#endif //__SWM320_CRC_H__
